package com.linchong.stackqueue.easy;

import java.util.Stack;

/**
 * @author linchong
 * @version 1.0
 * @Date: 2020-12-01 12:06
 * @Description: MinStack$155-最小栈
 * 设计一个支持 push ，pop ，top 操作，并能在常数时间内检索到最小元素的栈。
 *
 * push(x) —— 将元素 x 推入栈中。
 * pop() —— 删除栈顶的元素。
 * top() —— 获取栈顶元素。
 * getMin() —— 检索栈中的最小元素
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/min-stack
 *
 */
@SuppressWarnings("unused")
public class MinStack {

	Stack<Integer> stackData;
	Stack<Integer> min;
	/** initialize your data structure here. */
	public MinStack() {
		stackData = new Stack<>();
		min = new Stack<>();
	}

	public void push(int x) {
		if(stackData.isEmpty()){
			stackData.push(x);
			min.push(x);
		}else{
			int data = min.peek();
			min.push(Math.min(data, x));
			stackData.push(x);
		}
	}

	public void pop() {
		stackData.pop();
		min.pop();
	}

	public int top() {
		return stackData.peek();
	}

	public int getMin() {
		return min.peek();
	}
}
